1. Field of the Invention
This invention relates generally to virtual memory storage systems for mini and mainframe computing systems, and particularly, to a novel system for managing storage of unvirtualized data pages in real storage.
2. Discussion of the Prior Art
Virtual memory management schemes enable a computer system to present a large address space, larger than the amount of real storage on the system. A virtual memory management scheme consists of a mapping of an address space which provide a means of translating a virtual address of a page into a real address of a frame. A frame is the basic unit by which real storage is managed in a computer system. For example, in z/Architecture a frame consists of 4096 bytes.
Since real storage is a limited resource, when the operating system determines that it has become scarce it may try to write the data on some real frames to auxiliary storage, also called a direct access storage device (DASD) which is cheaper and more plentiful, but much slower to access. This operation is known as paging and involves initiating output device I/O to auxiliary storage. The operating system makes paging decisions at a global level and a local level. At the global level, the operating system determines which address spaces will suffer a potential performance penalty of having their data paged out to auxiliary storage. At the local level, the operating system determines which frames within an address space are good candidates to be paged to auxiliary storage. In general, frames which are least recently used are better candidates to be paged to auxiliary storage since they have a lower likelihood of being referenced in the near future. Computer systems, including z/Architecture, provide facilities to approximate least recently used (LRU) order. Part of the facility is the Referenced bit which is associated with each frame of storage in z/Architecture. The Referenced bit is turned on by the hardware whenever a frame of storage is referenced or changed. A separate bit called the Changed bit is turned on by the hardware whenever a frame is changed. z/Architecture also provides an instruction called Reset Reference Bit Extended (herein referred to a RRBE) which sets the Referenced bit to zero and sets a condition code which provides an indication of whether the frame was changed and/or referenced. The OS/390 operating system maintains a data structure, known as the Page Frame Table Entry (or PFTE) which includes data corresponding to a single frame. The aggregate of PFTEs is referred to as the PFT or Page Frame Table. PFTEs corresponding to frames used for a particular address space are placed on a queue. Periodically, this queue of PFTEs is traversed and the RRBE instruction is used to determine whether the frame is referenced; PFTEs corresponding to frames that have been referenced are moved to the back of the queue. This traversal of the PFTE queue is known as Unreferenced Interval Count Update (or UIC Update).
The act of writing real frames in use by an address space to auxiliary storage to replenish the number of available frames is referred to as stealing. When an address space is selected for stealing, steal candidates are selected by traversing the PFTE queue from the front to the back, in least recently used (LRU) order.
To support paging input/output (I/O) to/from auxiliary storage, virtual storage memory systems implement a facility known as Virtual Input/Output (VIO), which enables system-managed, temporary datasets to reside on virtual devices in external page storage. VIO is designed to reduce the need for the processor to transfer data between DASD and a real storage device and be processed using paging I/O. In operation, VIO""s implement a scheme that partitions a dataset in 4K-byte pages, for example. By implementing VIO, system performance is improved as much of the overhead and time required to allocate a device and to move data physically between main storage and an I/O device is eliminated. As known, VIO is supported by services provided by: 1) an Auxiliary Storage Manager (ASM) which dynamically allocates page-size physical blocks to the VIO dataset, treats each VIO dataset as a logical group (LG) of 4096-byte pages and assigns each dataset page within a logical group an identifier known as a Logical Page Identifier (LPID); and, 2) a Real Storage Manager (RSM) which manipulates page table entries (PTE), external page table entries (XPTE), and page frame table entries (PFTE), and in response to requests made to connect (input) or disconnect (output) VIO dataset pages to or from a VIO buffer which is used by VIO to simulate I/O, by moving data between the VIO buffer and the user""s buffer. The LPID is an 8 byte long word comprised of a first 4 byte word LGID (Logical Group ID) assigned by ASM to a Vio Dataset and, a second 4 byte word RPN (Relative Page Number) which is assigned by a Virtual block processor (VBP) to each page of the VIO Dataset.
As known, the following RSM requests are supported: ASSIGN which is an operation for generally assigning a Vio Dataset Page to virtual storage (hereinafter, a xe2x80x9cVio Window Pagexe2x80x9d) includes the following variations: an ASSIGN NULL which is a process requested by the VIO facility when a virtual page is required and which assigns the Vio Window Page first reference data (e.g., a page of zeroes); and, ASSIGN NORMAL which is an operation for connecting a VIO dataset page to the VIO buffer, i.e., a Vio Window page 20 gets its data from the Vio dataset page 25, as shown in FIG. 1; MOVE-OUT-NULL (Disconnect) a process for disconnecting the pages in the VIO buffer from virtual storage, i.e., the Vio Window Page is made first reference and the association between the Vio Window Page and the Vio Dataset Page no longer exists; MOVE-OUT (Non-Disconnect) a process for copying the data from the Vio Window Page to the Vio Dataset Page and putting the Vio Dataset Page on Auxiliary storage. The association between the Vio Window Page and the Vio Dataset Page remains intact; MOVE-OUT (Disconnect) is a process for causing a page-out to occur unless the page was stolen, i.e., data is copied from the Vio Window Page to the Vio Dataset Page. The Vio Window Page is made first reference and the association between the Vio Window Page and the Vio Dataset Page no longer exists.
Certain data such as dataset data that reside in external paging storage is known as xe2x80x9cunvirtualizedxe2x80x9d and in virtual storage memory systems such as the IBM OS/390, requires I/O operations to access this data.
It would be highly desirable to provide a virtual memory storage system with the ability to keep such unvirtualized data, i.e., VIO datasets, in real storage in order to help reduce the I/O needed to reference this data.
It is thus an object of the present invention to provide a virtual memory storage system with the ability to keep unvirtualized data in real storage in order to help reduce the I/O needed in order to reference this data.
When data needs to be written out to a dataset residing in external paging space, no output I/O needs to be performed if the dataset data is kept in real storage. All that is necessary is a copy operation for copying the data from the real frame for the window page to a real frame that represents the dataset page. Additionally, when there is need to retrieve the dataset data into a virtual window, if the dataset page resides in real then there is no need for input I/O. Copying the data from the frame containing the dataset page to the frame that backs the virtual window is all that is needed.
According to the principles of the invention, there is provided in a computing system implementing a virtual memory system having real memory storage frames for storing virtual pages of data and an auxiliary storage system comprising auxiliary storage slots for storing copies of corresponding virtual pages, wherein I/O mechanisms are employed for effectuating transfer of data between the auxiliary and real storage, a system and method for managing storage of unvirtualized dataset pages destined for auxiliary storage, the method comprising the steps of: moving data from a virtual window in an address space to a virtual input/output (VIO) dataset allocated for storage in a frame in real memory; maintaining a pageable frame queue associated with the address space that owns the VIO dataset; generating a page frame associated with the VIO dataset page and queuing the page frame to the pageable frame queue; and, indicating the frame as including unvirtualized data and one of: marking the page frame for the VIO dataset page as unchanged if there is another copy of the VIO dataset page resides on the Auxiliary storage, or marking the frame as changed if the VIO dataset page is the only copy of the VIO dataset page, whereby the unvirtualized data is efficiently accessible without having to employ I/O mechanisms.
Advantageously, the system and method of the invention may be used to allow faster access to VIO data set data by allowing that data to be kept in real storage. Thus, when the system is not constrained for real storage VIO dataset pages that are to be written out to the external paging space are kept in real storage.